// Border Radius
.border-radius(@radius: 4px) {
    -webkit-border-radius: @radius;
    -moz-border-radius: @radius;
    border-radius: @radius;
}

// Opacity
.opacity(@opacity) {
    opacity: @opacity / 100;
    filter: ~"alpha(opacity=@{opacity})";
}

/* Mixins para las transiciones */
.transition(@transition) {
    -webkit-transition: @transition;
    -moz-transition: @transition;
    -o-transition: @transition;
    transition: @transition;
}

// Transitions
.transition-delay(@transition-delay) {
    -webkit-transition-delay: @transition-delay;
    -moz-transition-delay: @transition-delay;
    -o-transition-delay: @transition-delay;
    transition-delay: @transition-delay;
}
.transition-duration(@transition-duration) {
    -webkit-transition-duration: @transition-duration;
    -moz-transition-duration: @transition-duration;
    -o-transition-duration: @transition-duration;
    transition-duration: @transition-duration;
}

// Drop shadows
.box-shadow(@shadow) {
    -webkit-box-shadow: @shadow;
    -moz-box-shadow: @shadow;
    box-shadow: @shadow;
}

.box-shadow(@x: 0, @y: 0, @blur: 1px, @color: #222) when (iscolor(@color)) {
    box-shadow: @arguments;
    -moz-box-shadow: @arguments;
    -webkit-box-shadow: @arguments;
    -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=@blur, Direction=135, Color='@{color}')";
    filter: progid:DXImageTransform.Microsoft.Shadow(Strength= @blur, Direction=135, Color='@{color}');
}

.box-shadow-none() {
    box-shadow: none;
    -webkit-box-shadow: none;
    -moz-box-shadow: none;
    -ms-filter: none;
    filter: none;
}

.text-shadow(@x: 0, @y: 0, @blur: 1px, @color: #222) {
/*
1. value = The X-ccordinate
2. value = The Y-coordinate
3. value = The blur radius
4. value = The color of the shadow*/
    text-shadow: @x @y @blur @color;
}

// Box sizing
.box-sizing(@boxmodel) {
    -webkit-box-sizing: @boxmodel;
    -moz-box-sizing: @boxmodel;
    box-sizing: @boxmodel;
}

.box-sizing-border-box() {
    -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
    -moz-box-sizing: border-box; /* Firefox, other Gecko */
    box-sizing: border-box; /* Opera/IE 8+ */
}

// Transformations
.rotate(@degrees: -5deg) {
    -webkit-transform: rotate(@degrees);
    -moz-transform: rotate(@degrees);
    -ms-transform: rotate(@degrees);
    -o-transform: rotate(@degrees);
    transform: rotate(@degrees);
}
.scale(@ratio: 1.5) {
    -webkit-transform: scale(@ratio);
    -moz-transform: scale(@ratio);
    -ms-transform: scale(@ratio);
    -o-transform: scale(@ratio);
    transform: scale(@ratio);
}
.translate(@x: 0px, @y: 0px) {
    -webkit-transform: translate(@x, @y);
    -moz-transform: translate(@x, @y);
    -ms-transform: translate(@x, @y);
    -o-transform: translate(@x, @y);
    transform: translate(@x, @y);
}
.skew(@x, @y) {
    -webkit-transform: skew(@x, @y);
    -moz-transform: skew(@x, @y);
    -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twitter/bootstrap/issues/4885
    -o-transform: skew(@x, @y);
    transform: skew(@x, @y);
    -webkit-backface-visibility: hidden; // See https://github.com/twitter/bootstrap/issues/5319
}
.translate3d(@x, @y, @z) {
    -webkit-transform: translate3d(@x, @y, @z);
    -moz-transform: translate3d(@x, @y, @z);
    -o-transform: translate3d(@x, @y, @z);
    transform: translate3d(@x, @y, @z);
}

.wrap() {
    text-wrap: wrap;
    white-space: pre-wrap;
    white-space: -moz-pre-wrap;
    word-wrap: break-word;
}

.size(@height, @width) {
    width: @width;
    height: @height;
}

// Text overflow
// -------------------------
// Requires inline-block or block for proper styling
.text-overflow() {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

// Gradients
#gradient {
    .horizontal(@startColor: #555, @endColor: #333) {
        background-color: @endColor;
        background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
        background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
        background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
        background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
        background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10
        background-repeat: repeat-x;
        filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down
    }
    .vertical(@startColor: #555, @endColor: #333) {
        background-color: mix(@startColor, @endColor, 60%);
        background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
        background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
        background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
        background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
        background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
        background-repeat: repeat-x;
        filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down
    }
    .directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
        background-color: @endColor;
        background-repeat: repeat-x;
        background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
        background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
        background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
        background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10
    }
    .horizontal-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
        background-color: mix(@midColor, @endColor, 80%);
        background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
        background-image: -webkit-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
        background-image: -moz-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
        background-image: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
        background-image: linear-gradient(to right, @startColor, @midColor @colorStop, @endColor);
        background-repeat: no-repeat;
        filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
    }

    .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
        background-color: mix(@midColor, @endColor, 80%);
        background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
        background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
        background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
        background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
        background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
        background-repeat: no-repeat;
        filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
    }
    .radial(@innerColor: #555, @outerColor: #333) {
        background-color: @outerColor;
        background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
        background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
        background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
        background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
        background-repeat: no-repeat;
    }
    .striped(@color: #555, @angle: 45deg) {
        background-color: @color;
        background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
        background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
        background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
        background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
        background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
    }
}
// Reset filters for IE
.reset-filter() {
    filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
}

// Button backgrounds
// ------------------
.buttonBackground(@startColor, @endColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
// gradientBar will set the background to a pleasing blend of these, to support IE<=9
    .gradientBar(@startColor, @endColor, @textColor, @textShadow);
    *background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */
    .reset-filter();

// in these cases the gradient won't cover the background, so we override
    &:hover, &:focus, &:active, &.active, &.disabled, &[disabled] {
        color: @textColor;
        background-color: @endColor;
        *background-color: darken(@endColor, 5%);
    }

// IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves
    &:active,
    &.active {
        background-color: darken(@endColor, 10%);
    }
}

// FONTS
// --------------------------------------------------

#font {
    #family {
        .serif() {
            font-family: @serifFontFamily;
        }
        .sans-serif() {
            font-family: @sansFontFamily;
        }
        .monospace() {
            font-family: @monoFontFamily;
        }
    }
    .shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
        font-size: @size;
        font-weight: @weight;
        line-height: @lineHeight;
    }
    .serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
        #font > #family > .serif;
        #font > .shorthand(@size, @weight, @lineHeight);
    }
    .sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
        #font > #family > .sans-serif;
        #font > .shorthand(@size, @weight, @lineHeight);
    }
    .monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
        #font > #family > .monospace;
        #font > .shorthand(@size, @weight, @lineHeight);
    }
}